/**
* GetTransactionDetailsResponseType.java
*
* This file was auto-generated from WSDL
* by the Apache Axis 1.2.1 Jun 14, 2005 (09:15:57 EDT) WSDL2Java emitter.
*/
package PayPalAPI.api.ebay;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.javacommerce.paypal.ws.API;
import org.javacommerce.paypal.ws.NVPConstants;
import CoreComponentTypes.apis.ebay.BasicAmountType;
import eBLBaseComponents.apis.ebay.AckCodeType;
import eBLBaseComponents.apis.ebay.AddressOwnerCodeType;
import eBLBaseComponents.apis.ebay.AddressStatusCodeType;
import eBLBaseComponents.apis.ebay.AddressType;
import eBLBaseComponents.apis.ebay.AuctionInfoType;
import eBLBaseComponents.apis.ebay.CountryCodeType;
import eBLBaseComponents.apis.ebay.CurrencyCodeType;
import eBLBaseComponents.apis.ebay.PayPalUserStatusCodeType;
import eBLBaseComponents.apis.ebay.PayerInfoType;
import eBLBaseComponents.apis.ebay.PaymentCodeType;
import eBLBaseComponents.apis.ebay.PaymentInfoType;
import eBLBaseComponents.apis.ebay.PaymentItemInfoType;
import eBLBaseComponents.apis.ebay.PaymentItemType;
import eBLBaseComponents.apis.ebay.PaymentStatusCodeType;
import eBLBaseComponents.apis.ebay.PaymentTransactionCodeType;
import eBLBaseComponents.apis.ebay.PaymentTransactionType;
import eBLBaseComponents.apis.ebay.PendingStatusCodeType;
import eBLBaseComponents.apis.ebay.PersonNameType;
import eBLBaseComponents.apis.ebay.ReceiverInfoType;
import eBLBaseComponents.apis.ebay.ReversalReasonCodeType;
import eBLBaseComponents.apis.ebay.SeverityCodeType;
import eBLBaseComponents.apis.ebay.SubscriptionInfoType;
import eBLBaseComponents.apis.ebay.SubscriptionTermsType;
public class GetTransactionDetailsResponseType extends eBLBaseComponents.apis.ebay.AbstractResponseType implements NVPConstants, java.io.Serializable {
private static final Log LOG = LogFactory.getLog(GetTransactionDetailsResponseType.class.getName());
/**
*
*/
private static final long serialVersionUID = -2337157465697727778L;
private eBLBaseComponents.apis.ebay.PaymentTransactionType paymentTransactionDetails;
public GetTransactionDetailsResponseType() {
}
public GetTransactionDetailsResponseType(
eBLBaseComponents.apis.ebay.PaymentTransactionType paymentTransactionDetails) {
this.paymentTransactionDetails = paymentTransactionDetails;
}
public GetTransactionDetailsResponseType(InputStream _is) {
BufferedReader reader = new BufferedReader(new InputStreamReader(_is));
String currentLine = null;
paymentTransactionDetails = new PaymentTransactionType();
paymentTransactionDetails.setPayerInfo(new PayerInfoType());
paymentTransactionDetails.getPayerInfo().setAddress(new AddressType());
paymentTransactionDetails.getPayerInfo().setPayerName(new PersonNameType());
paymentTransactionDetails.setPaymentInfo(new PaymentInfoType());
paymentTransactionDetails.setPaymentItemInfo(new PaymentItemInfoType());
paymentTransactionDetails.setReceiverInfo(new ReceiverInfoType());
paymentTransactionDetails.getPaymentItemInfo().setSubscription(new SubscriptionInfoType());
paymentTransactionDetails.getPaymentItemInfo().getSubscription().setTerms(new SubscriptionTermsType[] {new SubscriptionTermsType()});
paymentTransactionDetails.getPaymentItemInfo().setAuction(new AuctionInfoType());
Map<String, String> delayedFields = new HashMap<String, String>();
try {
while ((currentLine = reader.readLine()) != null) {
String[] pairs = StringUtils.split(currentLine, "&");
if (LOG.isDebugEnabled()) {
LOG.debug("Read line [" + currentLine + "], split into " + pairs.length + " pairs.");
}
for (int i = 0; i < pairs.length; i++) {
String[] nvp = StringUtils.split(pairs[i], "=");
String name = nvp[0];
String value = null;
if (nvp.length == 2) {
value = URLDecoder.decode(nvp[1], "UTF-8");
}
if (LOG.isDebugEnabled()) {
LOG.debug("Read pair [" + name + "]/[" + value + "]");
}
if (isCommonField(name)) {
processCommonField(name, value);
}
// Process fields
else if (name.equals(FIELD_RECEIVERBUSINESS) && value != null) {
paymentTransactionDetails.getReceiverInfo().setBusiness(value);
}
else if (name.equals(FIELD_RECEIVEREMAIL) && value != null) {
paymentTransactionDetails.getReceiverInfo().setReceiver(value);
}
else if (name.equals(FIELD_RECEIVERID) && value != null) {
paymentTransactionDetails.getReceiverInfo().setReceiverID(value);
}
else if (name.equals(FIELD_EMAIL) && value != null) {
paymentTransactionDetails.getPayerInfo().setPayer(value);
}
else if (name.equals(FIELD_PAYERID) && value != null) {
paymentTransactionDetails.getPayerInfo().setPayerID(value);
}
else if (name.equals(FIELD_PAYERSTATUS) && value != null) {
paymentTransactionDetails.getPayerInfo().setPayerStatus(PayPalUserStatusCodeType.fromString(value));
}
else if (name.equals(FIELD_FIRSTNAME) && value != null) {
paymentTransactionDetails.getPayerInfo().getPayerName().setFirstName(value);
}
else if (name.equals(FIELD_LASTNAME) && value != null) {
paymentTransactionDetails.getPayerInfo().getPayerName().setLastName(value);
}
else if (name.equals(FIELD_MIDDLENAME) && value != null) {
paymentTransactionDetails.getPayerInfo().getPayerName().setMiddleName(value);
}
else if (name.equals(FIELD_PAYERBUSINESS) && value != null) {
paymentTransactionDetails.getPayerInfo().setPayerBusiness(value);
}
else if (name.equals(FIELD_COUNTRYCODE) && value != null) {
paymentTransactionDetails.getPayerInfo().setPayerCountry(CountryCodeType.fromString(value));
}
else if (name.equals(FIELD_SALUTATION) && value != null) {
paymentTransactionDetails.getPayerInfo().getPayerName().setSalutation(value);
}
else if (name.equals(FIELD_NAME) && value != null) {
paymentTransactionDetails.getPayerInfo().getAddress().setName(value);
}
else if (name.equals(FIELD_SUFFIX) && value != null) {
paymentTransactionDetails.getPayerInfo().getPayerName().setSuffix(value);
}
else if (name.equals(FIELD_ADDRESSOWNER) && value != null) {
paymentTransactionDetails.getPayerInfo().getAddress().setAddressOwner(AddressOwnerCodeType.fromString(value));
}
else if (name.equals(FIELD_ADDRESSID) && value != null) {
paymentTransactionDetails.getPayerInfo().getAddress().setAddressID(value);
}
else if (name.equals(FIELD_ADDRESSSTATUS) && value != null) {
paymentTransactionDetails.getPayerInfo().getAddress().setAddressStatus(AddressStatusCodeType.fromString(value));
}
else if (name.equals(FIELD_SHIPTOCITY) && value != null) {
paymentTransactionDetails.getPayerInfo().getAddress().setCityName(value);
}
else if (name.equals(FIELD_SHIPTOCOUNTRY) && value != null) {
paymentTransactionDetails.getPayerInfo().getAddress().setCountry(CountryCodeType.fromString(value));
}
else if (name.equals(FIELD_SHIPTOCOUNTRYNAME) && value != null) {
paymentTransactionDetails.getPayerInfo().getAddress().setCountryName(value);
}
else if (name.equals(FIELD_SHIPTONAME) && value != null) {
paymentTransactionDetails.getPayerInfo().getAddress().setName(value);
}
else if (name.equals(FIELD_SHIPTOPHONENUM) && value != null) {
paymentTransactionDetails.getPayerInfo().getAddress().setPhone(value);
}
else if (name.equals(FIELD_SHIPTOZIP) && value != null) {
paymentTransactionDetails.getPayerInfo().getAddress().setPostalCode(value);
}
else if (name.equals(FIELD_SHIPTOSTATE) && value != null) {
paymentTransactionDetails.getPayerInfo().getAddress().setStateOrProvince(value);
}
else if (name.equals(FIELD_SHIPTOSTREET) && value != null) {
paymentTransactionDetails.getPayerInfo().getAddress().setStreet1(value);
}
else if (name.equals(FIELD_SHIPTOSTREET2) && value != null) {
paymentTransactionDetails.getPayerInfo().getAddress().setStreet2(value);
}
else if (name.equals(FIELD_PARENTTRANSACTIONID) && value != null) {
paymentTransactionDetails.getPaymentInfo().setParentTransactionID(value);
}
else if (name.equals(FIELD_TRANSACTIONID) && value != null) {
paymentTransactionDetails.getPaymentInfo().setTransactionID(value);
}
else if (name.equals(FIELD_RECEIPTID) && value != null) {
paymentTransactionDetails.getPaymentInfo().setReceiptID(value);
}
else if (name.equals(FIELD_TRANSACTIONTYPE) && value != null) {
paymentTransactionDetails.getPaymentInfo().setTransactionType(PaymentTransactionCodeType.fromString(value));
}
else if (name.equals(FIELD_PAYMENTTYPE) && value != null) {
paymentTransactionDetails.getPaymentInfo().setPaymentType(PaymentCodeType.fromString(value));
}
else if (name.equals(FIELD_PAYMENTDATE) && value != null) {
paymentTransactionDetails.getPaymentInfo().setPaymentDate(API.apiStringToCalendar(value));
}
else if (name.equals(FIELD_ORDERTIME) && value != null) {
paymentTransactionDetails.getPaymentInfo().setPaymentDate(API.apiStringToCalendar(value));
}
else if (name.equals(FIELD_AMT) && value != null) {
delayedFields.put(name, value);
}
else if (name.equals(FIELD_CURRENCYCODE) && value != null) {
delayedFields.put(name, value);
}
else if (name.equals(FIELD_FEEAMT) && value != null) {
delayedFields.put(name, value);
}
else if (name.equals(FIELD_SETTLEAMOUNT) && value != null) {
delayedFields.put(name, value);
}
else if (name.equals(FIELD_TAXAMOUNT) && value != null) {
delayedFields.put(name, value);
}
else if (name.equals(FIELD_EXCHANGERATE) && value != null) {
paymentTransactionDetails.getPaymentInfo().setExchangeRate(value);
}
else if (name.equals(FIELD_PAYMENTSTATUS) && value != null) {
paymentTransactionDetails.getPaymentInfo().setPaymentStatus(PaymentStatusCodeType.fromString(value));
}
else if (name.equals(FIELD_PENDINGREASON) && value != null) {
paymentTransactionDetails.getPaymentInfo().setPendingReason(PendingStatusCodeType.fromString(value));
}
else if (name.equals(FIELD_REASONCODE) && value != null) {
paymentTransactionDetails.getPaymentInfo().setReasonCode(ReversalReasonCodeType.fromString(value));
}
else if (name.equals(FIELD_INVNUM) && value != null) {
paymentTransactionDetails.getPaymentItemInfo().setInvoiceID(value);
}
else if (name.equals(FIELD_CUSTOM) && value != null) {
paymentTransactionDetails.getPaymentItemInfo().setCustom(value);
}
else if (name.equals(FIELD_NOTE) && value != null) {
paymentTransactionDetails.getPaymentItemInfo().setMemo(value);
}
else if (name.equals(FIELD_SALESTAX) && value != null) {
paymentTransactionDetails.getPaymentItemInfo().setSalesTax(value);
}
else if (name.equals(FIELD_SUBSCRIPTIONID) && value != null) {
paymentTransactionDetails.getPaymentItemInfo().getSubscription().setSubscriptionID(value);
}
else if (name.equals(FIELD_SUBSCRIPTIONDATE) && value != null) {
paymentTransactionDetails.getPaymentItemInfo().getSubscription().setSubscriptionDate(API.apiStringToCalendar(value));
}
else if (name.equals(FIELD_EFFECTIVEDATE) && value != null) {
paymentTransactionDetails.getPaymentItemInfo().getSubscription().setEffectiveDate(API.apiStringToCalendar(value));
}
else if (name.equals(FIELD_RETRYTIME) && value != null) {
paymentTransactionDetails.getPaymentItemInfo().getSubscription().setRetryTime(API.apiStringToCalendar(value));
}
else if (name.equals(FIELD_USERNAME) && value != null) {
paymentTransactionDetails.getPaymentItemInfo().getSubscription().setUsername(value);
}
else if (name.equals(FIELD_PASSWORD) && value != null) {
paymentTransactionDetails.getPaymentItemInfo().getSubscription().setPassword(value);
}
else if (name.equals(FIELD_RECURRENCES) && value != null) {
paymentTransactionDetails.getPaymentItemInfo().getSubscription().setRecurrences(value);
}
else if (name.equals(FIELD_REATTEMPT) && value != null) {
paymentTransactionDetails.getPaymentItemInfo().getSubscription().setReattempt(value);
}
else if (name.equals(FIELD_RECURRING) && value != null) {
paymentTransactionDetails.getPaymentItemInfo().getSubscription().setRecurring(value);
}
else if (name.equals(FIELD_PERIOD) && value != null) {
// TODO: Check if this is 1 or many
paymentTransactionDetails.getPaymentItemInfo().getSubscription().getTerms(0).setPeriod(value);
}
// TODO: What about Terms.Amount?
else if (name.equals(FIELD_BUYERID) && value != null) {
paymentTransactionDetails.getPaymentItemInfo().getAuction().setBuyerID(value);
}
else if (name.equals(FIELD_CLOSINGDATE) && value != null) {
paymentTransactionDetails.getPaymentItemInfo().getAuction().setClosingDate(API.apiStringToCalendar(value));
}
else if (name.equals(FIELD_MULTIITEM) && value != null) {
paymentTransactionDetails.getPaymentItemInfo().getAuction().setMultiItem(value);
}
// Start processing Line Items
else if (name.startsWith(FIELD_L_DESC) && value != null) {
addLineItemDescription(name, value);
}
else if (name.startsWith(FIELD_L_NUMBER) && value != null) {
addLineItemNumber(name, value);
}
else if (name.startsWith(FIELD_L_QTY) && value != null) {
addLineItemQuantity(name, value);
}
else if (name.startsWith(FIELD_L_AMT) && value != null) {
addLineItemAmount(name, value);
}
else if (name.startsWith(FIELD_L_OPTIONS) && value != null) {
addLineItemOptions(name, value);
}
}
// Process the delayed fields
if (delayedFields.containsKey(FIELD_AMT)) {
BasicAmountType amount = new BasicAmountType((String) delayedFields.get(FIELD_AMT));
if (delayedFields.containsKey(FIELD_CURRENCYCODE)) {
amount.setCurrencyID(CurrencyCodeType.fromString((String) delayedFields.get(FIELD_CURRENCYCODE)));
}
getPaymentTransactionDetails().getPaymentInfo().setGrossAmount(amount);
}
if (delayedFields.containsKey(FIELD_FEEAMT)) {
BasicAmountType amount = new BasicAmountType((String) delayedFields.get(FIELD_FEEAMT));
if (delayedFields.containsKey(FIELD_CURRENCYCODE)) {
amount.setCurrencyID(CurrencyCodeType.fromString((String) delayedFields.get(FIELD_CURRENCYCODE)));
}
getPaymentTransactionDetails().getPaymentInfo().setFeeAmount(amount);
}
if (delayedFields.containsKey(FIELD_SETTLEAMOUNT)) {
BasicAmountType amount = new BasicAmountType((String) delayedFields.get(FIELD_SETTLEAMOUNT));
if (delayedFields.containsKey(FIELD_CURRENCYCODE)) {
amount.setCurrencyID(CurrencyCodeType.fromString((String) delayedFields.get(FIELD_CURRENCYCODE)));
}
getPaymentTransactionDetails().getPaymentInfo().setSettleAmount(amount);
}
if (delayedFields.containsKey(FIELD_TAXAMOUNT)) {
BasicAmountType amount = new BasicAmountType((String) delayedFields.get(FIELD_TAXAMOUNT));
if (delayedFields.containsKey(FIELD_CURRENCYCODE)) {
amount.setCurrencyID(CurrencyCodeType.fromString((String) delayedFields.get(FIELD_CURRENCYCODE)));
}
getPaymentTransactionDetails().getPaymentInfo().setTaxAmount(amount);
}
}
} catch (Exception e) {
if (LOG.isErrorEnabled()) {
LOG.error("Exception caught processing response: " + e.getLocalizedMessage(), e);
}
setAck(AckCodeType.Failure);
addSeverityCode("L_SEVERITYCODE0", SeverityCodeType.Error.toString());
addErrorCode("L_ERRORCODE0", "JC1000");
addLongMessage("L_LONGMESSAGE0", "Error processing GetTransactionDetails API call");
addShortMessage("L_SHORTMESSAGE0", "Error processing request");
}
}
private void addLineItemOptions(String _name, String _value) {
int lineNum = Integer.parseInt(StringUtils.replace(_name, FIELD_L_OPTIONS, ""));
if (paymentTransactionDetails.getPaymentItemInfo().getPaymentItem().length <= lineNum) {
addLineItems(lineNum);
}
// TODO: How to convert Options to array?
// paymentTransactionDetails.getPaymentItemInfo().getPaymentItem(lineNum).(_value);
}
private void addLineItemAmount(String _name, String _value) {
int lineNum = Integer.parseInt(StringUtils.replace(_name, FIELD_L_AMT, ""));
if (paymentTransactionDetails.getPaymentItemInfo().getPaymentItem().length <= lineNum) {
addLineItems(lineNum);
}
paymentTransactionDetails.getPaymentItemInfo().getPaymentItem(lineNum).setAmount(new BasicAmountType(_value));
}
private void addLineItemQuantity(String _name, String _value) {
int lineNum = Integer.parseInt(StringUtils.replace(_name, FIELD_L_QTY, ""));
if (paymentTransactionDetails.getPaymentItemInfo().getPaymentItem().length <= lineNum) {
addLineItems(lineNum);
}
paymentTransactionDetails.getPaymentItemInfo().getPaymentItem(lineNum).setQuantity(_value);
}
private void addLineItemNumber(String _name, String _value) {
int lineNum = Integer.parseInt(StringUtils.replace(_name, FIELD_L_NUMBER, ""));
if (paymentTransactionDetails.getPaymentItemInfo().getPaymentItem().length <= lineNum) {
addLineItems(lineNum);
}
paymentTransactionDetails.getPaymentItemInfo().getPaymentItem(lineNum).setNumber(_value);
}
private void addLineItemDescription(String _name, String _value) {
int lineNum = Integer.parseInt(StringUtils.replace(_name, FIELD_L_DESC, ""));
if (paymentTransactionDetails.getPaymentItemInfo().getPaymentItem() == null || paymentTransactionDetails.getPaymentItemInfo().getPaymentItem().length <= lineNum) {
addLineItems(lineNum);
}
paymentTransactionDetails.getPaymentItemInfo().getPaymentItem(lineNum).setName(_value);
}
private void addLineItems(int _num) {
ArrayList<PaymentItemType> lines = new ArrayList<PaymentItemType>();
int counter = 0;
if (paymentTransactionDetails.getPaymentItemInfo().getPaymentItem() != null) {
for (int i = counter; i < paymentTransactionDetails.getPaymentItemInfo().getPaymentItem().length; i++) {
lines.add(i, paymentTransactionDetails.getPaymentItemInfo().getPaymentItem(i));
counter++;
}
for (int i = counter; i < _num; i++) {
lines.add(i, new PaymentItemType());
}
}
else {
lines.add(new PaymentItemType());
}
paymentTransactionDetails.getPaymentItemInfo().setPaymentItem((PaymentItemType[]) lines.toArray(new PaymentItemType[lines.size()]));
}
/**
* Gets the paymentTransactionDetails value for this GetTransactionDetailsResponseType.
*
* @return paymentTransactionDetails
*/
public eBLBaseComponents.apis.ebay.PaymentTransactionType getPaymentTransactionDetails() {
return paymentTransactionDetails;
}
/**
* Sets the paymentTransactionDetails value for this GetTransactionDetailsResponseType.
*
* @param paymentTransactionDetails
*/
public void setPaymentTransactionDetails(eBLBaseComponents.apis.ebay.PaymentTransactionType paymentTransactionDetails) {
this.paymentTransactionDetails = paymentTransactionDetails;
}
private java.lang.Object __equalsCalc = null;
public synchronized boolean equals(java.lang.Object obj) {
if (!(obj instanceof GetTransactionDetailsResponseType)) return false;
GetTransactionDetailsResponseType other = (GetTransactionDetailsResponseType) obj;
if (obj == null) return false;
if (this == obj) return true;
if (__equalsCalc != null) {
return (__equalsCalc == obj);
}
__equalsCalc = obj;
boolean _equals;
_equals = super.equals(obj) &&
((this.paymentTransactionDetails==null && other.getPaymentTransactionDetails()==null) ||
(this.paymentTransactionDetails!=null &&
this.paymentTransactionDetails.equals(other.getPaymentTransactionDetails())));
__equalsCalc = null;
return _equals;
}
private boolean __hashCodeCalc = false;
public synchronized int hashCode() {
if (__hashCodeCalc) {
return 0;
}
__hashCodeCalc = true;
int _hashCode = super.hashCode();
if (getPaymentTransactionDetails() != null) {
_hashCode += getPaymentTransactionDetails().hashCode();
}
__hashCodeCalc = false;
return _hashCode;
}
}